Kameleon-Plus  0.3.2
KameleonInterpolator.h
Go to the documentation of this file.
1 /*
2  * KameleonInterpolator.h
3  *
4  * Created on: Jul 1, 2009
5  * Author: David Berrios
6  */
7 
8 #ifndef KAMELEONINTERPOLATOR_H_
9 #define KAMELEONINTERPOLATOR_H_
10 #include <boost/unordered_map.hpp>
11 
12 #include "Interpolator.h"
13 
14 namespace ccmc
15 {
23  {
24  public:
25  KameleonInterpolator(Model * modelReader);
26 
35  float interpolate(const std::string& variable, const float& c0, const float& c1, const float& c2);
36 
48  float interpolate(const std::string& variable, const float& c0, const float& c1, const float& c2, float& dc0,
49  float& dc1, float& dc2);
50 
59  float interpolate(const long& variable_id, const float& c0, const float& c1, const float& c2);
60  float interpolate(const long& variable_id, const float& c0, const float& c1, const float& c2, float& dc0, float& dc1,
61  float& dc2);
62 
63 
64  virtual ~KameleonInterpolator();
65  private:
66  typedef float (KameleonInterpolator::*CalculationMethod)(const std::string&,
67  const float& positionComponent1, const float& positionComponent2, const float& positionComponent3,
68  float& dComponent1, float& dComponent2, float& dComponent3);
69  std::string modelName;
70  Model * modelReader;
71  Interpolator * interpolator;
72  boost::unordered_map<std::string, std::vector<std::string> > listOfRequiredVariablesForComponents;
73  boost::unordered_map<std::string, std::vector<std::string> > listOfRequiredVariablesForVectors;
74 
75 
76  boost::unordered_map<std::string, CalculationMethod> calculationMethod;
77  boost::unordered_map<std::string, float> conversionFactorsToSI;
78  boost::unordered_map<std::string, float> conversionFactorsToVis;
79  boost::unordered_map<std::string, std::string> variableAliases;
80 
81  //std::vector<std::string> getListOfRequiredVariablesForComponents(std::string variable);
82  //std::vector<std::string> getListOfRequiredVariablesForVectors(std::string variable);
83  void initializeCalculationMethods();
84  float compute_magnitude(const std::string& variable, const float& c0, const float& c1, const float& c2);
85  float compute_temp(const std::string& variable, const float& c0, const float& c1, const float& c2);
86  float compute_pram(const std::string& variable, const float& c0, const float& c1, const float& c2);
87  float compute_edotj(const std::string& variable, const float& c0, const float& c1, const float& c2);
88  float compute_eComponent1(const std::string& variable, const float& c0, const float& c1, const float& c2);
89  float compute_ey(const std::string& variable, const float& c0, const float& c1, const float& c2);
90  float compute_ez(const std::string& variable, const float& c0, const float& c1, const float& c2);
91  float
92  compute_jparComponent1(const std::string& variable, const float& c0, const float& c1,
93  const float& c2);
94  float compute_jpary(const std::string& variable, const float& c0, const float& c1, const float& c2);
95  float compute_jparz(const std::string& variable, const float& c0, const float& c1, const float& c2);
96  float compute_jpar(const std::string& variable, const float& c0, const float& c1, const float& c2);
97  float compute_jxbComponent1(const std::string& variable, const float& c0, const float& c1, const float& c2);
98  float compute_jxby(const std::string& variable, const float& c0, const float& c1, const float& c2);
99  float compute_jxbz(const std::string& variable, const float& c0, const float& c1, const float& c2);
100  float compute_jxb(const std::string& variable, const float& c0, const float& c1, const float& c2);
101  float compute_exbComponent1(const std::string& variable, const float& c0, const float& c1, const float& c2);
102  float compute_exby(const std::string& variable, const float& c0, const float& c1, const float& c2);
103  float compute_exbz(const std::string& variable, const float& c0, const float& c1, const float& c2);
104  float compute_exb(const std::string& variable, const float& c0, const float& c1, const float& c2);
105  float compute_s(const std::string& variable, const float& c0, const float& c1, const float& c2);
106  float compute_n(const std::string& variable, const float& c0, const float& c1, const float& c2);
107  float compute_nv(const std::string& variable, const float& c0, const float& c1, const float& c2);
108  float compute_nvComponent1(const std::string& variable, const float& c0, const float& c1, const float& c2);
109  float compute_nvy(const std::string& variable, const float& c0, const float& c1, const float& c2);
110  float compute_nvz(const std::string& variable, const float& c0, const float& c1, const float& c2);
111  float compute_p(const std::string& variable, const float& c0, const float& c1, const float& c2);
112  float compute_beta(const std::string& variable, const float& c0, const float& c1, const float& c2);
113  float compute_en(const std::string& variable, const float& c0, const float& c1, const float& c2);
114  float compute_scaleByRadius(const std::string& variable, const float& c0, const float& c1, const float& c2);
115  float compute_polb(const std::string& variable, const float& c0, const float& c1, const float& c2);
116  float compute_etaj(const std::string& variable, const float& c0, const float& c1, const float& c2);
117  float
118  compute_etajComponent1(const std::string& variable, const float& c0, const float& c1,
119  const float& c2);
120  float
121  compute_etajComponent2(const std::string& variable, const float& c0, const float& c1,
122  const float& c2);
123  float
124  compute_etajComponent3(const std::string& variable, const float& c0, const float& c1,
125  const float& c2);
126  float
127  compute_gradient(const std::string& variable, const float& c0, const float& c1,
128  const float& c2);
129 
130  float compute_magnitude(const std::string& variable, const float& c0, const float& c1, const float& c2,
131  float& d0, float& d1, float& d2);
132  float compute_temp(const std::string& variable, const float& c0, const float& c1, const float& c2,
133  float& d0, float& d1, float& d2);
134  float compute_pram(const std::string& variable, const float& c0, const float& c1, const float& c2,
135  float& d0, float& d1, float& d2);
136  float compute_edotj(const std::string& variable, const float& c0, const float& c1, const float& c2,
137  float& d0, float& d1, float& d2);
138  float compute_eComponent1(const std::string& variable, const float& c0, const float& c1, const float& c2,
139  float& d0, float& d1, float& d2);
140  float compute_ey(const std::string& variable, const float& c0, const float& c1, const float& c2, float& d0,
141  float& d1, float& d2);
142  float compute_ez(const std::string& variable, const float& c0, const float& c1, const float& c2, float& d0,
143  float& d1, float& d2);
144  float compute_jparComponent1(const std::string& variable, const float& c0, const float& c1,
145  const float& c2, float& d0, float& d1, float& d2);
146  float compute_jpary(const std::string& variable, const float& c0, const float& c1, const float& c2,
147  float& d0, float& d1, float& d2);
148  float compute_jparz(const std::string& variable, const float& c0, const float& c1, const float& c2,
149  float& d0, float& d1, float& d2);
150  float compute_jpar(const std::string& variable, const float& c0, const float& c1, const float& c2,
151  float& d0, float& d1, float& d2);
152  float compute_jxbComponent1(const std::string& variable, const float& c0, const float& c1, const float& c2,
153  float& d0, float& d1, float& d2);
154  float compute_jxby(const std::string& variable, const float& c0, const float& c1, const float& c2,
155  float& d0, float& d1, float& d2);
156  float compute_jxbz(const std::string& variable, const float& c0, const float& c1, const float& c2,
157  float& d0, float& d1, float& d2);
158  float compute_jxb(const std::string& variable, const float& c0, const float& c1, const float& c2,
159  float& d0, float& d1, float& d2);
160  float compute_exbComponent1(const std::string& variable, const float& c0, const float& c1, const float& c2,
161  float& d0, float& d1, float& d2);
162  float compute_exby(const std::string& variable, const float& c0, const float& c1, const float& c2,
163  float& d0, float& d1, float& d2);
164  float compute_exbz(const std::string& variable, const float& c0, const float& c1, const float& c2,
165  float& d0, float& d1, float& d2);
166  float compute_exb(const std::string& variable, const float& c0, const float& c1, const float& c2,
167  float& d0, float& d1, float& d2);
168  float compute_s(const std::string& variable, const float& c0, const float& c1, const float& c2, float& d0,
169  float& d1, float& d2);
170  float compute_n(const std::string& variable, const float& c0, const float& c1, const float& c2, float& d0,
171  float& d1, float& d2);
172  float compute_nv(const std::string& variable, const float& c0, const float& c1, const float& c2, float& d0,
173  float& d1, float& d2);
174  float compute_nvComponent1(const std::string& variable, const float& c0, const float& c1, const float& c2,
175  float& d0, float& d1, float& d2);
176  float compute_nvy(const std::string& variable, const float& c0, const float& c1, const float& c2,
177  float& d0, float& d1, float& d2);
178  float compute_nvz(const std::string& variable, const float& c0, const float& c1, const float& c2,
179  float& d0, float& d1, float& d2);
180  float compute_p(const std::string& variable, const float& c0, const float& c1, const float& c2, float& d0,
181  float& d1, float& d2);
182  float compute_beta(const std::string& variable, const float& c0, const float& c1, const float& c2,
183  float& d0, float& d1, float& d2);
184  float compute_en(const std::string& variable, const float& c0, const float& c1, const float& c2, float& d0,
185  float& d1, float& d2);
186  float interpolateSimple(const std::string& variable, const float& c0, const float& c1, const float& c2);
187  float interpolateSimple(const std::string& variable, const float& c0, const float& c1, const float& c2,
188  float& d0, float& d1, float& d2);
189  float interpolateSimple(const long& variable, const float& c0, const float& c1, const float& c2);
190  float interpolateSimple(const long& variable, const float& c0, const float& c1, const float& c2,
191  float& d0, float& d1, float& d2);
192  float compute_scaleByRadius(const std::string& variable, const float& c0, const float& c1, const float& c2,
193  float& d0, float& d1, float& d2);
194  float compute_polb(const std::string& variable, const float& c0, const float& c1, const float& c2,
195  float& d0, float& d1, float& d2);
196  float compute_etaj(const std::string& variable, const float& c0, const float& c1, const float& c2,
197  float& d0, float& d1, float& d2);
198  float compute_etajComponent1(const std::string& variable, const float& c0, const float& c1,
199  const float& c2, float& d0, float& d1, float& d2);
200  float compute_etajComponent2(const std::string& variable, const float& c0, const float& c1,
201  const float& c2, float& d0, float& d1, float& d2);
202  float compute_etajComponent3(const std::string& variable, const float& c0, const float& c1,
203  const float& c2, float& d0, float& d1, float& d2);
204  float compute_gradient(const std::string& variable, const float& c0, const float& c1,
205  const float& c2, float& d0, float& d1, float& d2);
206  //declare strings that will be used frequently during interpolation calls. Definition occurs in the constructor
207  std::vector<float>* interpolateSimple(std::vector<std::string>& variables, const float& c0, const float& c1, const float& c2);
208  std::vector<float>* interpolateSimple(std::vector<long>& variables, const float& c0, const float& c1, const float& c2);
209  void initializeConversionFactorsToVis();
210  float getConversionFactorToVis(const std::string& variable);
211  };
212 }
213 
214 #endif /* KAMELEONINTERPOLATOR_H_ */